package cn.edu.hyit.hjq.volunteems.backend.service;

import cn.edu.hyit.hjq.volunteems.backend.pojo.PointRecord;

import java.util.List;

/**
 * 积分记录服务接口
 *
 * @module 积分服务
 */
public interface PointRecordService {

    /**
     * 分页查询用户的积分记录
     *
     * @param userId 用户ID，用于筛选该用户的所有积分记录
     * @param page   当前页码，用于分页查询
     * @param size   每页记录数，控制每页返回多少条数据
     * @return 返回符合条件的积分记录列表
     */
    List<PointRecord> listPointRecords(String userId, Integer page, Integer size);

    /**
     * 获取单个积分记录的详细信息
     *
     * @param id 积分记录的唯一标识符
     * @return 返回对应的积分记录对象
     */
    PointRecord getPointRecordDetail(Long id);

    /**
     * 获取指定志愿者的总积分
     * @param volunteerId 志愿者 ID
     * @return 总积分，如果没有记录则返回 0
     */
    int getTotalPointsByVolunteerId(String volunteerId);

    /**
     * 添加一条新的积分记录
     *
     * @param pointRecord 包含积分记录信息的对象
     */
    void addPointRecord(PointRecord pointRecord);

    /**
     * 更新指定ID的积分记录
     *
     * @param id           要更新的积分记录ID
     * @param pointRecord  包含新数据的积分记录对象
     */
    void updatePointRecord(Long id, PointRecord pointRecord);

    /**
     * 删除指定ID的积分记录
     *
     * @param id 要删除的积分记录ID
     */
    void deletePointRecord(Long id);
}
